package com.example.administrator.filetestapplacation;

/**
 *
 * Created by xuwei on 2016/10/19.
 * @auther xuwei
 */

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;


public class WriteFile extends Thread {

    File file;
    int block;//块
    int L = 5;//块大小

    /**
     * File        数据插入文件
     *            |***        |+++
     * |-----------***---------+++--------------------------|
     * 		|---
     */

    /**
     * 文件块示意图
     * 1			2			 3			  4			   5
     * |------------|------------|------------|------------|------------|
     * 0xL			1xL
     *
     * @param f
     * @param b
     */

    public WriteFile(File f, int b) {
        this.file = f;
        this.block = b;
    }

    @Override
    public void run() {
        try {
            RandomAccessFile raf = new RandomAccessFile(file, "rw");//rw代表可读可写，参数还有r、rws、rwd
            raf.seek((block - 1) * L);//定位指针
            raf.writeBytes("abcde" + block);
            /**
             * 注：如果写入数据小于块大小，未填满数据块，多余字节位置大小依然存在（虽然不一定可见）
             * 若数据大于块大小，将占用后面块的位置，后写入的块数据从块指定位置开始，又会重叠在后方块之上
             */
//            for (int i = 0; i < 20; i++) {
//                raf.writeBytes("-");
//            }
            raf.writeBytes("\n");//会占用一个字节的位置大小

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

